#ifndef _USER_APP_H_
#define _USER_APP_H_

#include "Global.h"
// #include "RF.h"

// typedef struct
// {
//     Typedef_RF_DATA2    Data2;
//     Typedef_RF_DATA3    Data3;
//     Typedef_RF_DATA4    Data4;
// }Typedef_RemoteCtrl;

// extern Typedef_RemoteCtrl  RemoteCtrl;
// extern uint8 RunMode;
//extern uint16 TmDelayAutoExit;

#define C_EEP_ADDR          0x20
#define C_EEP_ADDR_UID      0x3F8

#define C_FLASH_TIME_LOW     250
#define C_FLASH_TIME_FAST   100
#define C_MAX_USER          (1+3)
#define C_CMD_PAIR          0xEE
#define C_TIME_BASE         10
#define C_TM_PAIR_RESEND    (1000ul/C_TIME_BASE)     // *10ms
#define C_AUTO_EXIT_PAIR    (15000ul/C_TIME_BASE)    // *10ms
#define C_AUTO_EXIT_NORMAL  (15000ul/C_TIME_BASE)     
#define C_AUTO_EXIT_LOW     (3000ul/C_TIME_BASE)
#define C_DELAY_TO_SLEEP    (1000ul/C_TIME_BASE)  
#define C_DELAY_TO_SLEEP2   (200/C_TIME_BASE)

typedef struct 
{
    // D2
    uint8 WindTemp:4;       //---- 风温档位
    uint8 WaterTemp:4;      //---- 水温档位

    // D3
    uint8 Hydraulic:4;      //---- 水压档位
    uint8 SeatTemp:4;       //---- 座温档位

    // D4
    uint8 WaterLevel:2;     //---- 陶瓷冲水档位
    uint8 WindSpeed:2;      //---- 风速档位
    uint8 CleanPos:4;       //---- 清洗位置

    // D5
    uint8 Reversed:1;
    uint8 CtrlSource:1;     //---- 控制源：0-遥控按键  1-语音模块
    uint8 FuncSpecif:2;     //---- 功能指定开关：0-关  1-开
    uint8 MicWaveLevel:4;   //---- 微波档位

    // D6
    uint8 ReversedD6B0:1;   //---- 预留
    uint8 AutoChuChou:1;    //---- 自动除臭
    uint8 AutoFanGai:1;     //---- 自动翻盖
    uint8 AutoFanQuan:1;    //---- 自动翻圈
    uint8 AutoMicWave:1;    //---- 自动微波
    uint8 AutoShaJunShui:1; //---- 自动杀菌水
    uint8 AutoPaoMo:1;      //---- 自动泡沫
    uint8 AutoChongShui:1;  //---- 自动冲水

    // D7
    uint8 PaoMoDunLevel:2;  //---- 泡沫盾档位
    uint8 ReversedData7:2;  //
    uint8 GanYingDeng:4;    //---- 感应氛围灯


}Typedef_USER_DATA;

typedef union 
{
    Typedef_USER_DATA Detail;
    u8 Buf[sizeof(Typedef_USER_DATA)];
}U_USER_DATA;

typedef struct 
{
    uint8 DispFengWenEN:1;
    uint8 DispShuiWenEN:1;
    uint8 DispZuoWenEN:1;
    uint8 DispShuiYaEN:1;
    uint8 DispPenZuiEN:1;
    uint8 DispTaoCiChongShuiEN:1;
    uint8 DispPaoMoDunEN:1;
    uint8 DispMicWaveEN:1;

    uint8 DispGanYingDengEN:1;
    uint8 Reversed:7;
}Typedef_DISP_FLAG;



extern xdata U_USER_DATA    User[C_MAX_USER];
extern u8 UserSelect;
extern Typedef_DISP_FLAG DispFlg;

#define C_TM_AUTO_EXIT  (10000ul/100)

#define C_DEFAULT_WATER_TEMP    2       //---- 水温
#define C_DEFAULT_WIND_TEMP     2       //---- 风温
#define C_DEFAULT_SEAT_TEMP     2       //---- 座温
#define C_DEFAULT_HYDRAULIC     2       //---- 水压
#define C_DEFAULT_CLEAN_POS     2       //---- 清洗位置
#define C_DEFAULT_WIND_SPEED    0       //---- 风速
#define C_DEFAULT_WATER_LEVEL   2       //---- 陶瓷冲水档位
#define C_DEFAULT_MASSAGE_LEVEL 0       //---- 按摩
#define C_DEFAULT_MIC_WAV       2       //---- 微波
#define C_DEFAULT_GESTURE       0       //---- 手势
#define C_DEFAULT_PAOMODUN_LEVEL 2      //---- 泡沫盾档位
#define C_DEFAULT_GANYINGDENG    2      //---- 感应氛围灯
#define C_DEFAULT_REVERSED7      0   //

enum
{
    ID_USER0 = 0,       //---- 暂存用户信息
    ID_USER1,
    ID_USER2,
    ID_USER3,
};

enum
{
    WM_SLEEP = 0,
    WM_NORMAL,
    WM_PAIR,
};

void initUserApp(void);
void RemappingKeyFunction(void);
void LoadUserSetting(u8 userId);
void SaveUserSetting(u8 userId);
void LedDispFengWen(uint8 level);
void LedDispShuiWen(uint8 level);
void LedDispZuoWen(uint8 level);
void LedDispPenQiang(uint8 pos);
void LedDispShuiYa(uint8 level);
void LedDispTaoCiChongShui(uint8 pos);
void LedDispPaoMoDun(uint8 pos);
void LedDispMicWave(uint8 pos);
void LedDispGanYingDeng(uint8 pos);
void LedDispClear(void);
void EnterPairSetting(void);
void ExitPairSetting(void);
void PairMode(void);
uint8 CheckIsPairMode(void);
void SwitchWkMode(uint8 mode);
uint8    CheckWkMode(uint8 mode);
void SleepMode(void);
void NormalMode(void);
void    ResetTimeSleep(void);
#endif

